先簡單回顧一下,今天預計分析兩個題目:
題目敘述:

測資的 Input/Output
題目如果給你 [1,1,2] 那你要把多餘的元素刪掉,並回傳不重複元素個數

python 實作如下:


- python 實作
class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
#       k 會用來計算不重複元素的位置
        k = 1
#       j 會走得比較快,把不重複的值,丟給 k 位置儲存
        for j in range(1, len(nums)):
#           判斷第 j 個位置跟第 j-1 的位置,是否不相等,若不相等,就把 nums[k] 儲存 nums[j],並 k 向右移動
            if nums[j] != nums[j - 1]:
                nums[k] = nums[j]
                k += 1
        return k
class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        j = 1
        while j < len(nums):
            if nums[j] == nums[j-1]:
                nums.pop(j)  
                j -= 1
            j += 1
        return len(nums)
class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        nums[:] = sorted(set(nums))
        return len(nums)
題目敘述:
題目會給你一個從小排序到大的資料,跟希望找到的兩數相加的和 (target)
你需要找出哪兩個位置的值,相加會等於 target
哪兩個位置的值相加為 target,只會有一種答案
同一個元素不能加兩次

測資的 Input/Output
題目會給你一個遞增的數列,跟希望找到的目標總和 (target)
回傳一個 list 結構的資料,裡面要包含相加會等於 target 的 index

python 實作


class Solution:
    def twoSum(self, numbers: List[int], target: int) -> List[int]:
        left = 0
        right = len(numbers)-1
        while not numbers[left] + numbers[right] == target:
            while numbers[left] + numbers[right] > target and left != right:
                right -= 1 
            while numbers[left] + numbers[right] < target and left != right:
                left += 1
        return [left+1,right+1]